﻿namespace LK
{
	namespace Drawing
	{
		/**@brief 表示一块矩形的大小，T表示坐标数据的类型*/
		template<class T>class Size
		{
		public:
			/**@brief 宽*/
			T width;
			/**@brief 高*/
			T height;
			/**@brief 默认构造*/
			Size(){}
			/**@brief 使用Point来构造*/
			Size(Point<T>const& p) :width(p.x), height(p.y){}
			/**@brief 使用其它类型的Size来构造*/
			template<class AnyT>Size(Size<AnyT>const& p) : width(p.width), height(p.height){}
			/**@brief 使用指定的宽、高构造*/
			Size(const T& w, const T& h) :width(w), height(h){}
			/**@brief 坐标乘*/
			inline friend Size operator*(const Size & p, const T & i){ return Size(p.width*i, p.height*i); }
			Size & operator*=(const T & i){ return *this = *this * i; }
			/**@brief 坐标除*/
			inline friend Size operator/(const Size & p, const T & i){ return Size(p.width / i, p.height / i); }
			Size & operator/=(const T & i){ return *this = *this / i; }
			/**@brief 比较*/
			bool operator==(Size const& l)const{ return l.width == width&&height == l.height; }
			bool operator!=(Size const& l)const{ return l.width != width || height != l.height; }
			/**@brief 获取面积*/
			T GetSquare()const{ return width*height; }
		};

	}
}
